package ihotel

class HomePageController {

	static allowedMethods = [save: "POST"]

	def index() {
		[reservaInstance: new Reserva(params)]
	}

	def verificarDisponibilidade() {
		def qtQuartosAReservar  = Integer.valueOf(params.quantidadeQuartos)
		def qtQuartosHotel      = Quarto.list().size()
		def qtQuartosReservados = 0 //Reserva.list().size() // verificar as quantidades reservadas...
		for (int i=1; i <= Reserva.count(); i++) {
			def reserva = Reserva.get(i)			
			qtQuartosReservados += reserva.quantidadeQuartos
		}
		
		//def qtQuartosReservados = Reserva.findBydataInicialGreaterThanAnddataFinalLessThan(dtInicial, dtFinal)
		//def qtQuartosReservados = Reserva.findAll("From Reserva r where year(r.dataInicial) = dataInicial_year")
				
		if (qtQuartosAReservar + qtQuartosReservados > qtQuartosHotel) {
			flash.message = "Infelizmente não temos a disponibilidade de ${params.quantidadeQuartos} quarto(s) para a sua reserva"
			redirect(action:"problema")
		} else {
			redirect(action:"confirmarReserva", params:params)
		}
	}
	
	def confirmarReserva() {
		[reservaInstance: new Reserva(params)]
	}

	def problema() {
	}

	def save() {
		def reservaInstance = new Reserva(params)
		if (!reservaInstance.save(flush: true)) {
			flash.message = "Não foi possível efetuar a Reserva."			
			redirect(action: "problema")			
		}
		flash.message = "Reserva efetuada com sucesso!"
		redirect(action: "show", id: reservaInstance.id)
	}

	def show(Long id) {
		def reservaInstance = Reserva.get(id)
		if (!reservaInstance) {
			flash.message = message(code: 'default.not.found.message', args: [message(code: 'reserva.label', default: 'Reserva'), id])
			redirect(action: "index")
			return
		}
		[reservaInstance: reservaInstance]
	}

}
